﻿Imports SIAVU.Dominio

Namespace Presentacion

    Partial Public Class ProgramarPlazos
        Inherits System.Web.UI.Page

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not (Page.IsPostBack) Then
                If Not (cmbMesPlazo.SelectedIndex > 0) Then
                    '//Cargo los valores por default de los combos
                    cmbMesPlazo.SelectedItem = cmbMesPlazo.Items.FindByValue(Date.Now.Month.ToString())
                    cmbAnio.SelectedItem = cmbAnio.Items.FindByValue(Date.Now.Year.ToString())
       
                End If
                MostrarDatosPlazo()
            End If
        End Sub

#Region "Eventos"

        Protected Sub btnAceptar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAceptar.Click
            Page.Validate()
            If (Page.IsValid) Then
                Dim oPlazo As Plazo = ObtenerPlazo()

                oPlazo.FechaDesdeModificacion = fechaDesde.Value
                oPlazo.FechaHastaModificacion = fechaHasta.Value

                If (oPlazo.guardar() = True) Then
                    Session("MensajeInformacion") = "Se ha configurado de manera exitosa las fechas de modificación del plazo"
                    Response.Redirect("MenuPrincipal.aspx")
                Else
                    'TODO Direccionar a página de error o mostrar mensaje
                End If
            End If
        End Sub

        Private Sub cmbAnio_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbAnio.SelectedIndexChanged
            MostrarDatosPlazo()
        End Sub

        Private Sub cmbMesPlazo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbMesPlazo.SelectedIndexChanged
            MostrarDatosPlazo()
        End Sub

#End Region

#Region "Métodos"

        Private Sub MostrarDatosPlazo()
            '//Obtengo el registro de la base de datos, y si no existe no hago nada...
            Dim oPlazo As Plazo = ObtenerPlazo()
            If (oPlazo IsNot Nothing) Then
                fechaDesde.Value = oPlazo.FechaDesdeModificacion
                fechaDesde.VisibleDate = oPlazo.FechaDesdeModificacion
                fechaHasta.Value = oPlazo.FechaHastaModificacion
                fechaHasta.VisibleDate = oPlazo.FechaHastaModificacion
            
            End If
        End Sub

        Private Function ObtenerPlazo() As Plazo
            Dim oPlazo As New Plazo

            If (cmbAnio.SelectedItem Is Nothing Or cmbMesPlazo.SelectedItem Is Nothing) Then
            Else

                oPlazo = Plazo.getByPeriodo(cmbAnio.SelectedItem.Value, cmbMesPlazo.SelectedItem.Value)

                If (oPlazo Is Nothing) Then
                    '//Creo una nueva instacia
                    oPlazo = New Plazo
                    oPlazo.Anio = cmbAnio.SelectedItem.Value
                    oPlazo.Mes = cmbMesPlazo.SelectedItem.Value
                    oPlazo.FechaDesdeModificacion = CDate(oPlazo.Anio.ToString + "/" + oPlazo.Mes.ToString + "/01")
                    oPlazo.FechaHastaModificacion = CDate(oPlazo.Anio.ToString + "/" + oPlazo.Mes.ToString + "/01")
                End If
            End If

            Return oPlazo

        End Function

#End Region

#Region "Validaciones"

        Protected Sub cvGuardarPlazo_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvGuardarPlazo.ServerValidate
            '//Valido que la fecha hasta no sea menor o igual que la fecha desde
            If (fechaHasta.Value <= fechaDesde.Value) Then
                args.IsValid = False
                cvGuardarPlazo.ErrorMessage = "La fecha 'desde' debe ser menor que la fecha 'hasta'"
            End If
        End Sub

#End Region

    End Class

End Namespace
